package com.zb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zb.entity.ZjAccountRole;
import com.zb.view.AccountRoleView;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 账号角色表 Mapper 接口
 * </p>
 *
 * @author WEN
 * @since 2023-07-18
 */
@Repository
public interface ZjAccountRoleMapper extends BaseMapper<ZjAccountRole> {
    /**
     * 根据角色ID删除账号
     * @param roleId 角色ID
     * @return
     */
    int deleteByRoleId(Long roleId);

    /**
     * 根据商家ID与人员ID删除角色关联信息
     * @param custAccId 商家ID
     * @param empIdList 人员ID
     */
    void deleteByCustAccIdAndEmpId(@Param("custAccId") Long custAccId, @Param("empIdList") List<Long> empIdList);

    /**
     * 根据[商家ID]&[账号ID]查询
     * @param custAccId 商家ID
     * @param accountId 账号ID
     * @return
     */
    ZjAccountRole getByCustAccIdAndAccountId(@Param("custAccId") Long custAccId, @Param("accountId") Long accountId);

    /**
     * 根据[商家ID]&[账号ID]集合查询账号ID中是否包含系统超管
     * @param custAccId 商家ID
     * @param accountIds 账号ID集合
     * @return
     */
    Integer existAdminByAccountIds(@Param("custAccId") Long custAccId, @Param("accountIds") List<Long> accountIds);

    /**
     * 根据[商家ID]&[账号ID]集合查询对应的账号是否已经分配了角色
     * @param custAccId 商家ID
     * @param accountIds 账号ID集合
     * @return
     */
    List<Long> getAccountIdByCustAccIdAndAccountIds(@Param("custAccId") Long custAccId, @Param("accountIds") List<Long> accountIds);

    /**
     * 根据账号ID获取角色信息
     * @param custAccId 商家ID
     * @param accountId 账号ID
     * @return
     */
    Long getRoleIdByAccountId(@Param("custAccId") Long custAccId, @Param("accountId") Long accountId);

    /**
     * 查询角色信息
     * @param custAccId 商家ID
     * @param accountIds 账号ID
     * @return
     */
    List<AccountRoleView> getRoleByAccountIds(@Param("custAccId") Long custAccId, @Param("accountIds") List<Long> accountIds);

}
